The complexity of modem integrated circuits and the high cost of fabricating prototypes has led to the development of a class of computer programs that simulate the operation of a circuit. Simulation tools for analog and microwave circuits that are accurate and reliable are required to meet design specifications. Simulators are often helpful for determining steady state properties of circuits such as bias voltages to be applied to the various components. Thus, by the use of a simulator it is possible to verify the proper operation of a circuit before resources are committed to the fabrication of prototypes.
The simulator is supplied with a description of the circuit. The description contains characteristics and parameters of circuit components and devices and their interconnections. A user may be supplied with a graphical or other type of interface in order to input the circuit description. A computer program can derive a list from the user supplied description containing the details of the circuit including a its nodes, various components and devices, and their interconnections. The user may define the behavior of components and devices or utilize a library of standard components provided with the simulation program. The state of each components or device is determined by the current the component or device sources or sinks and the voltage across it. In some cases the behavior of a component or device may also depend not just on its current state but on its state history as well. The state of the circuit may be given in terms of the value of the voltages at each of its nodes.
The simulation program finds the set of node voltages that conform to Kirchoff's laws. In other words, the simulation program finds the set of node voltages such that the sum of the currents at each node is zero. This set of node voltages represents a state of the circuit in which the currents provided by a set of sourcing components or devices are exactly matched by currents supplied to a complementary set of components or devices that are sinking current. Each component or device is modeled in the computer by a mathematical relation between the current sinked or sourced by the component or device in response to an input voltage. For example, if a component is a capacitor, then the current through it will depend on the corresponding node voltages and the rate of change of the node voltages with time. The rate of change of the voltage at a node may be computed from previous values of node voltages, i.e. the "history of the nodes".
The simplest type of simulation determines the steady state behavior of the circuit, i.e., its DC operating conditions. Such simulations may be useful in setting various bias voltages on key nodes in the circuit. Determining the steady state solution reduces to finding the solution of a system of nonlinear equations. Typically such nonlinear equations may be solved by an iterative procedure such as a Newton-Raphson iteration. The number of nonlinear equations is at least N, where N is the number of nodes in the circuit.
The simulation of the circuit under transient or large signal operating conditions is substantially more complex. The voltage is determined as a function of time at one or more nodes in the circuit when some input node is connected to a voltage source or current source that supplies an excitation signal. The requirement that the currents entering a node are balanced by the currents leaving the node leads to a mathematical model of the circuit behavior. The mathematical model is expressed in set of differential equations. A circuit having N nodes is now described by a set of at least N differential-algebraic equations.
Numerical methods for solving such systems of nonlinear differential-algebraic equations have been developed. Many such numerical methods require that an iterative process be executed at each time point. Hence, the solution of the transient simulation problem is much more computationally complex than the solution of the DC simulation.
The interval between time points is typically determined by the highest frequency expected at any node having a component connected to it whose output depends on the rate of change of the node voltage, i.e. the first derivative of the node voltage. The first derivative may be determined by fitting the current node voltage and one or more previous node voltages to a curve. The slope of the curve is then used as an approximation of the first derivative. If successive time points are far apart, an approximation could lead to significant errors in the calculation of the first derivative. These errors cause unknown errors in predicting the state of an inductor or capacitor in the circuit. Hence, simulations of transients typically have errors that increase with the time step size. Therefore, to achieve the required accuracy in a simulation the number of time steps per second may be chosen to be an order of magnitude higher than the highest frequency expected at the most sensitive node.
Consider a simulation in which the excitation or input signal to the circuit is a 10 kHz modulation of a 10 GHz microwave signal. In order to view the circuit response over 10 cycles of the modulation envelope, i.e. one millisecond, with a step size equal to one tenth the period of the carrier, the circuit behavior must be computed at 100 million time points. If the behavior at each of 1000 nodes is to be recovered, the memory space needed for storing the results alone becomes problematic.
If the input wave form (excitation signal) is periodic or almost periodic (i.e. the ratios of the frequencies of the sinusoids are irrational numbers), the computational difficulties can be substantially reduced through the use of Harmonic balancing techniques. In this case, the excitation signal may be expressed by a sum of sinusoids having fixed frequencies and amplitudes. Each circuit component or device sources or sinks current in response to each of the sinusoids at the nodes connected to the component or device. If the excitation signal is represented by 10 sinusoids, the components or devices provide 10 current signals corresponding to the 10 sinusoids plus currents at harmonics and intermodulation products associated with the 10 sinusoids. Each current is expressed by a complex number representing the current's amplitude and phase. The currents associated with harmonics need be considered because a nonlinear device may excite one or more harmonics of an input signal. The simulation problem can then be reduced to solving a set of nonlinear equations in which the currents entering and leaving every node at each frequency are balanced.
Harmonic Balancing techniques relieve the burden of having to compute solutions at each time point. The system of equations defining the simulation problem, however, is now n times larger, where n is the number of harmonics for which each device must provide current data. Hence, the Harmonic Balance technique is applied in S cases where the computing system is able to solve a system of equations of order nN, where N is the number of nodes.
Harmonic Balance is a well-established frequency-domain method for steady state analysis of circuits exhibiting periodic and quasi-periodic behavior. Harmonic Balance is often used to analyze distortion, nonlinear transfer characteristics, noise performance and stability in electronic circuits for amplifiers, mixers, and oscillators. In the Harmonic Balance methodology each variable in the circuit is represented using a Fourier series. In the frequency-domain the equivalent of differentiation with respect to time in the time-domain is multiplication by the Fourier frequency (more precisely, multiplication by j.omega.). The application of Harmonic Balancing to the problem of simulating an electronic circuit results in a mathematical model expressed by a large system of nonlinear algebraic equations.
The unknowns in the system of nonlinear algebraic equations are the Fourier coefficients for each circuit variable. Typically, the system of nonlinear equations modeling the circuit are solved using, for example, a method such as Newton's method or the like. Many conventional software implementations of such numerical methods require storing and factoring of a relatively dense Jacobian matrix associated with the circuit equations. These costly operations limit the ability to apply Harmonic balancing methods to circuits containing only few nonlinear devices, e.g. transistors, and requiring the calculation of only a few Fourier coefficients. Recently, it has been demonstrated that iterative linear algebraic techniques may be used to solve problems involving large Jacobian matrices; thus extending the applicability of Harmonic Balancing methods to large circuits and systems.